package com.example.day02.utils;

import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.text.TextUtils;

//    使用AsyncTask获取网络数据
//    1.写一个类，继承与AsycnTask,传入三个参数：
//    1.执行异步任务时，传入的数据的类型，2.表示下载进度的类型  3。在后台执行完耗时操作，返回主线程的数据类型

public  class LoadNetDataAsyncTask extends AsyncTask<String,Void,String> {
    ProgressDialog dialog;

    onGetNetDataListener listener;
    public LoadNetDataAsyncTask(Context context, onGetNetDataListener listener){
        dialog = new ProgressDialog(context);
        dialog.setTitle("提示信息");
        dialog.setMessage("正在加载中......");
        this.listener = listener;
    }
    //    2.重写三个方法
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
//       执行异步请求之前，会调用的函数，通常做初始化操作。在主线程中工作的方法
        dialog.show();
    }

    @Override
    protected String doInBackground(String... params) {
        //开启了子线程，进行耗时操作，将获取到的数据，返回给主线程
        String json = HttpUtils.getJsonByNetwork(params[0]);
        return json;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        dialog.dismiss();
//                回到了主线程，将子线程传回来的数据，进行操作，更新UI
//                判断如果子线程返回的数据，不为空，就显示在UI控件上
        if (!TextUtils.isEmpty(s)) {
//              解析数据
            listener.showDataFromNet(s);
        }
    }
    //定义一个接口，当获取到数据时，就调用接口当中的方法
    public interface onGetNetDataListener{
        public void showDataFromNet(String s);
    }
}